f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
↳ QTRS
↳ AAECC Innermost
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
F(true, x, y) → F(gt(x, y), trunc(x), s(y))
F(true, x, y) → TRUNC(x)
GT(s(u), s(v)) → GT(u, v)
F(true, x, y) → GT(x, y)
TRUNC(s(s(x))) → TRUNC(x)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
F(true, x, y) → F(gt(x, y), trunc(x), s(y))
F(true, x, y) → TRUNC(x)
GT(s(u), s(v)) → GT(u, v)
F(true, x, y) → GT(x, y)
TRUNC(s(s(x))) → TRUNC(x)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QDP
GT(s(u), s(v)) → GT(u, v)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDP
GT(s(u), s(v)) → GT(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
↳ QDP
GT(s(u), s(v)) → GT(u, v)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
TRUNC(s(s(x))) → TRUNC(x)
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
TRUNC(s(s(x))) → TRUNC(x)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
TRUNC(s(s(x))) → TRUNC(x)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
F(true, x, y) → F(gt(x, y), trunc(x), s(y))
f(true, x, y) → f(gt(x, y), trunc(x), s(y))
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
F(true, x, y) → F(gt(x, y), trunc(x), s(y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
f(true, x0, x1)
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
f(true, x0, x1)
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
F(true, x, y) → F(gt(x, y), trunc(x), s(y))
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))
(1) (F(gt(x0, x1), trunc(x0), s(x1))=F(true, x2, x3) ⇒ F(true, x0, x1)≥F(gt(x0, x1), trunc(x0), s(x1)))
(2) (gt(x0, x1)=true ⇒ F(true, x0, x1)≥F(gt(x0, x1), trunc(x0), s(x1)))
(3) (true=true ⇒ F(true, s(x5), 0)≥F(gt(s(x5), 0), trunc(s(x5)), s(0)))
(4) (gt(x6, x7)=true∧(gt(x6, x7)=true ⇒ F(true, x6, x7)≥F(gt(x6, x7), trunc(x6), s(x7))) ⇒ F(true, s(x6), s(x7))≥F(gt(s(x6), s(x7)), trunc(s(x6)), s(s(x7))))
(5) (F(true, s(x5), 0)≥F(gt(s(x5), 0), trunc(s(x5)), s(0)))
(6) (F(true, x6, x7)≥F(gt(x6, x7), trunc(x6), s(x7)) ⇒ F(true, s(x6), s(x7))≥F(gt(s(x6), s(x7)), trunc(s(x6)), s(s(x7))))
POL(0) = 0
POL(F(x1, x2, x3)) = -1 + x2 - x3
POL(c) = -1
POL(false) = 1
POL(gt(x1, x2)) = x1
POL(s(x1)) = 1 + x1
POL(true) = 0
POL(trunc(x1)) = x1
The following pairs are in Pbound:
F(true, x, y) → F(gt(x, y), trunc(x), s(y))
The following rules are usable:
F(true, x, y) → F(gt(x, y), trunc(x), s(y))
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
trunc(0) → 0
↳ QTRS
↳ AAECC Innermost
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ NonInfProof
↳ QDP
↳ PisEmptyProof
gt(0, v) → false
gt(s(u), 0) → true
gt(s(u), s(v)) → gt(u, v)
trunc(0) → 0
trunc(s(0)) → 0
trunc(s(s(x))) → s(s(trunc(x)))
trunc(0)
trunc(s(0))
trunc(s(s(x0)))
gt(0, x0)
gt(s(x0), 0)
gt(s(x0), s(x1))